package com.mrd.gtimpframe.repository;

import java.util.List;
import java.util.Map;

import com.mrd.gtimpframe.entity.Declaration;
import com.mrd.gtimpframe.entity.RejectRecord;

public interface DeclarationMapper {
  int deleteByPrimaryKey(String id);

  int insert(Declaration record);

  int insertSelective(Declaration record);

  Declaration selectByPrimaryKey(String id);

  List<Declaration> selectByPrimaryKeyList(List<String> idList);

  int updateByPrimaryKeySelective(Declaration record);

  int updateByPrimaryKey(Declaration record);

  /**
   * 自定义查询条件及字段查询
   *
   * @param propertyMap 需要获取的报关单属性,whereCase:查询条件
   */
  List<RejectRecord> selectByWhereCase(Map<String, String> propertyMap);

  /**
   * 获取已锁定的报关单id
   */
  List<String> selectLocked();

  /**
   * 自定义查询条件及字段查询(只包含少部分查验信息)
   *
   * @param propertyMap 需要获取的报关单属性,whereCase:查询条件
   */
  List<Declaration> selectByWhereCaseIncludeCheckTracking(Map<String, String> propertyMap);

  /**
   * 自定义查询条件及字段查询(只包含少部分查验信息)
   *
   * @param propertyMap 需要获取的报关单属性,whereCase:查询条件
   */
  List<Declaration> findValidList(Map<String, String> propertyMap);

  /**
   * 待审核单据查询
   *
   * @author han 自定义查询条件及字段查询(只包含少部分查验信息)
   *
   * @param propertyMap 需要获取的报关单属性,whereCase:查询条件
   */
  List<Declaration> findToValidList(Map<String, String> propertyMap);

  /**
   * 根据主键查找报关单（包含单一窗口需要的所有内容）
   */
  Declaration selectByPrimaryKey4SingleWindow(String id);

  /**
   * 根据主键查询报关单号
   */
  List<Declaration> selectSimpleDeclarationByIdIn(List<String> list);

  /**
   * 批量保存
   *
   * @param declarations
   */
  int batchUpdateSelective(List<Declaration> declarations);

    /**
     * 页面表单查询
     * 位于查看报关单业务操作记录页面
     */
    Map<String, Object> selectForRecDeclarationForm(String did);

    /**
     * 用于下载操作记录
     */
    List<Map<String, Object>> selectRecDeclarationList(Map<String, Object> params);
}
